#ifndef _LOAD_H
#define    _LOAD_H 

#include <stdlib.h>
#include <stdio.h>
#include "elf.h"

/*
  Paramètres : Un fichier f qui doit être préalablement ouvert
  Retour : une structure Elf32_Ehdr contenant les informations du header
 */
Elf32_Ehdr load_header(FILE * f);

/*
  Paramètres : Un fichier f qui doit être préalablement ouvert
  Retour : un pointeur sur la table des sections
  Remarques : Ne pas oublier de libérer la mémoire dans le main
 */
Elf32_Shdr* load_section_headers(FILE * f);

/*
 Paramètres : Un fichier f qui doit être préalablement ouvert
 Retour : un pointeur sur les entrées de la table des symboles
 Remarques : Ne pas oublier de libérer la mémoire dans le main
*/
Elf32_Sym* load_symbol_table(FILE * f);

/*
  Paramètres : Un fichier f qui doit être préalablement ouvert
  Retour : un pointeur sur la table réimplantation
  Remarques : Ne pas oublier de libérer la mémoire dans le main (+noms et nbrels);
 */
Elf32_Rel* load_relocation_table(FILE * f, char*** noms, int** nbrels, int* nb);

/*
  Renvoi vrai si le fichier fini par .o
 */
int estELF(char * str);


/*
  Paramètres : Un fichier f qui doit être préalablement ouvert et l'indice du nom dans la string table
  Retour : un pointeur sur la chaine de caractere correspondante.
  Remarques : Ne pas oublier de libérer la mémoire dans le main
 */
char* getnom(FILE * f, long unsigned int name);

#endif

